/*
 * TraductorDirecciones.h
 *
 *  Created on: 21/02/2010
 *      Author: San Martín, Matías I.
 */

#ifndef TRADUCTORDIRECCIONES_H_
#define TRADUCTORDIRECCIONES_H_

#include "../../Aplicacion/Infraestructura/Directorio.h"
#include "../../Aplicacion/Infraestructura/DirectorioImpl.h"

#include "../Common/CommonTypes.h"
#include "../Common/IdPlaneta.h"
#include "../Common/IdJuego.h"

#include "../../Framework/Common/TemplateSingleton.h"

#include <map>

using std::map;

using namespace middleware::common;

namespace middleware {
namespace comunicaciones {

class TraductorDirecciones : private Singleton {

	/**
	 * Cachè de direcciones
	 */
	map<IdPlaneta, Direccion> cache;

public:

	/**
	 * Permite traducir de un IdPlaneta a una Direccion usada en el middleware
	 */
	Direccion getDireccion(const IdPlaneta& id);

	/**
	 * Permite traducir de un IdJuego a una Direccion usada en el middleware
	 */
	Direccion getDireccion(const IdJuego& id);
};

typedef SingletonTemplate<TraductorDirecciones> TraductorDireccionesSingleton;

}
}

#endif /* TRADUCTORDIRECCIONES_H_ */
